Computers are valuable tools in large part for their ability to communicate with other computer systems and retrieve information over computer networks. Networks typically comprise an interconnected group of computers, linked by wire, fiber optic, radio, or other data transmission means, to provide the computers with the ability to transfer information from computer to computer. The Internet is perhaps the best-known computer network, and enables millions of people to access millions of other computers such as by viewing web pages, sending e-mail, or by performing other computer-to-computer communication.
But, because the size of the Internet is so large and Internet users are so diverse in their interests, it is not uncommon for malicious users or pranksters to attempt to communicate with other users' computers in a manner that poses a danger to the other users. For example, a hacker may attempt to log in to a corporate computer to steal, delete, or change information. Computer viruses or Trojan horse programs may be distributed to other computers, or unknowingly downloaded or executed by large numbers of computer users. Further, computer users within an organization such as a corporation may on occasion attempt to perform unauthorized network communications, such as running file sharing programs or transmitting corporate secrets from within the corporation's network to the Internet.
For these and other reasons, many corporations, institutions, and even home users use a network firewall between their local network and the Internet. The firewall is typically a computerized network device that inspects network traffic that passes through it, permitting passage of desired network traffic based on a set of rules.
Firewalls perform their filtering functions by observing communication packets, such as TCP/IP or other network protocol packets, and examining characteristics such as the source and destination network addresses, what ports are being used, and the state or history of the connection. Some firewalls also examine packets traveling to or from a particular application, or act as a proxy device by processing and forwarding selected network requests between a protected user and external networked computers.
Connections between computers are often described in terms of ports, sockets, and other network-specific terms. In computer networks, a port is typically a specific number included in a packet of network data that identifies the packet to a particular process or program running on the computer. Many numbers have become standard, such as use of port 80 for HTTP web browsing, use of port 25 to send mail to an SMTP server and use of port 110 to retrieve mail from a POP server, and use of port 443 for secure HTTP web connections.
Processes manage connections to various ports through sockets, which comprise source and destination communications endpoints identified by port and network address, along with protocol identification. In one example, a program might use a socket provided via the operating system with a local address of 10.1.1.1:9876, and a remote address of 192.168.1.1:80.
Managing the traffic flow between computers typically involves monitoring connections between various ports, sockets, and protocols, such as by examining the network traffic in a firewall. Rules based on port, IP, or socket numbers are used to selectively filter or pass data, and to log network activity.